//
//  CZBaseTableViewController.swift
//  GZWeibo009
//
//  Created by gzxzmac on 16/3/21.
//  Copyright © 2016年 gzxzmac. All rights reserved.
//

import UIKit

// 协议里面的方法需要实现,不然也会报错
class CZBaseTableViewController: UITableViewController {

    /// 用户是否登录
    var userLogin = CZUserAccountViewModel.sharedInstance.userLogin
    
    override func loadView() {
        userLogin ? super.loadView() : setupVisitorView()
    }
    
    /// 设置访客视图
    func setupVisitorView() {
        view = visitorView
        
        // 设置访客视图代理
        // 当设置代理后,必须实现代理协议 : UITableViewController, CZVisitorViewDelegate
        // 5.设置代理
        visitorView.delegate = self
        
//        print("self : \(self)")
        // 在这里根据不同的控制器类型来设置不同的访客视图内容
        // is: 判断对象是否是某个类型
        // self 是父类,实际上创建的都是子类,self 就是子类的类型 -> 多态
        if (self is CZHomeViewController) {
            visitorView.startRotation()
        } else if (self is CZMessageViewController) {
            visitorView.setupVisitor("visitordiscover_image_message", message: "登录后，别人评论你的微博，发给你的消息，都会在这里收到通知")
        } else if (self is CZDiscoverViewController) {
            visitorView.setupVisitor("visitordiscover_image_message", message: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
        } else if (self is CZProfileViewController) {
            visitorView.setupVisitor("visitordiscover_image_profile", message: "登录后，你的微博、相册、个人资料会显示在这里，展示给别人")
        }
        
        // 导航栏的按钮,不是根据导航控制器来的.根导航控制器当前正在显示的子控制器相关
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "visitorViewDidClickRegisterButton")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登陆", style: UIBarButtonItemStyle.Plain, target: self, action: "visitroViewDidClickLoginButton")
    }
    
    // 注意不要写错协议里面的方法
//    func visitorViewDidClickRegisterButto() {
//        
//    }
//    
//    func visitroViewDidClickLoginButto() {
//        print(__FUNCTION__)
//    }
    
    
    // MARK: - 懒加载
    /// 自定义的访客视图
    lazy var visitorView: CZVisitorView = CZVisitorView()
}

// MARK: - extension扩展,可以在扩展里面实现协议,方便代码管理
extension CZBaseTableViewController: CZVisitorViewDelegate {
    // 扩展里面不能放存储属性
    // var name: String?   ==> OC NSString *_name
    
    // 扩展里面可以存放计算性属性
    var name: String {
        get {
            return ""
        }
        
        set {
            
        }
    }
    
    // MARK: - 实现协议的方法
    // 6.实现协议的方法
    func visitorViewDidClickRegisterButton() {
        
    }
    
    func visitroViewDidClickLoginButton() {
        // 弹出登陆界面
        let oauthVC = CZOauthViewController()
        
        // Modal出控制器
        presentViewController(UINavigationController(rootViewController: oauthVC), animated: true, completion: nil)
    }
}